package com.hrbxlh.dao;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;


@Repository
public interface ClassDao {
	
	/**
	 * @description 获取这个班级名的全部班级
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	 List<Map<String, Object>> getClassByClassName(String className) throws Exception;
	

	/**
	 * @description 添加班级的方法，参数key与数据库column对应即可。 
	 * @param Map<String,Object> paramMap
	 * @return 
	 * @throws Exception
	 */
	 void addClass(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询班级的方法
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 班级列表（如果查询一个班级，就在参数中给班级id）
	 * @throws Exception
	 */
	 List<Map<String, Object>> getClass(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 修改班级的方法，参数key与数据库column对应即可。 
	 * @param Map<String,Object> paramMap 人员信息，列值，
	 * @return boolean (true 成功 ,false失败)
	 * @throws Exception
	 */
	 void saveClass(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 删除班级的方法，传的是每个班级的id
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean delClass(List<String> paramList) throws Exception;
	
	/**date：2017-04-07 xzx
	 * @description 查询某班级详细信息
	 * @param classId
	 * @return Map
	 * @throws Exception
	 */
	 Map<String, Object> getClassMsgById(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 修改获取这个班级名的全部班级
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	 Map<String, Object> saveGetClassByClassName(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询当前班级所属的院系和专业
	 * @param classId
	 * @return Map
	 * @throws Exception
	 */
	 Map<String, Object> getDeAndProByClassId(Map<String, Object> paramMap) throws Exception;

	 /**date：2017-06-08 xzx
	 * @description 修改班级的位置，返回关联信息，下面带加号的 ,参数是班级id
	 * @param classId
	 * @return Map
	 * @throws Exception
	 */
	 List<Map<String, Object>> getClassRelation(Map<String, Object> paramMap) throws Exception;

	 /**date：2017-06-08 xzx
	 * @description 添加表单关联关系 表classRelation  参数paramMap stuorteaId classId  courseId
	 * @return Map
	 * @throws Exception
	 */
	 void saveClassRelation(Map<String, Object> paramMap) throws Exception;
	
	 /**date：2017-06-08 xzx
	 * @description 删除classrelation表里面的数据,参数是班级id，课程id，老师id
	 * @return Map
	 * @throws Exception
	 */
	 void delClassRelation(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-08 xzx
	 * @description 批量删除classrelation表中的数据，参数是classId
	 * @return Map
	 * @throws Exception
	 */
	 void delClassRelations(List<String> paramList) throws Exception;
	
	 /**date：2017-06-08 xzx
	 * @description 获取该班级对应的课程以及任课教师信息
	 * @param classId
	 * @return Map
	 * @throws Exception
	 */
	 List<Map<String, Object>> getCourseByClassId(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-08 xzx
	 * @description 删除classRelation表中的数据  参数是courseId
	 * @return Map
	 * @throws Exception
	 */
	 void delClassRelationsByCIds(List<String> paramList) throws Exception;

	/**date：2017-06-08 xzx
	 * @description 删除classrelation表中的信息  课id  老师id
	 * @return Map
	 * @throws Exception
	 */
	 void delRelationByUnBind(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-13 xzx
	 * @description 查询某班级详细信息  只有课程名
	 * @param classId
	 * @return Map
	 * @throws Exception
	 */
	 Map<String, Object> getClassNameById(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-21 xzx
	 * @description 删除这个班级与学生的关系
	 * @param classId
	 * @return Map
	 * @throws Exception
	 */
	 void delRelstuclassByClassId(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-23 xzx
	 * @description 删除这个班级下的学生，与这个课，这个类型的关联
	 * @param classId  courseId couSelectMark
	 * @return Map
	 * @throws Exception
	 */
	 void delStuReCouByClassId(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-26 xzx
	 * @description 将这个班级的useMark 进行修改
	 * @param classId useMark
	 * @return Map
	 * @throws Exception
	 */
	 void saveUseMark(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-26 xzx
	 * @description 将relstucou中表的学生与课程的结课标识关联字段进行修改
	 * @param 学生id 课id 标识  endMark
	 * @return Map
	 * @throws Exception
	 */
	 void saveEndMark(Map<String, Object> paramMap) throws Exception;
	
	/**date：2017-06-26 xzx
	 * @description 结课将学生与课程变为结课标识 
	 * @param  课id 班级id
	 * @return Map
	 * @throws Exception
	 */
	 void saveEndMarkEnd(Map<String, Object> paramMap) throws Exception;

	/**date：2017-06-28 xzx
	 * @description 修改某学生与某课程的结课标识relstucou  endMark
	 * @param  课id 学号  endMark
	 * @return Map
	 * @throws Exception
	 */
	 void saveRelStuCouEndMark(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 查询这个教师这个班级下这个课程的所学生的作业文件信息
	 */
	 List<Map<String, Object>> getCouClassTeaWork(Map<String, Object> paramMap) throws Exception;

	/**xzx
	 * @description 通过班级id教师id课程Id获取除了这个班级下的这个教师的这个课程的正常任课信息
	 * */
	 List<Map<String, Object>> getTeaReClassNormal(Map<String, Object> paramMap) throws Exception;

	/**xzx
	 * @description 获取班级集合下的任课信息，班级id  教师id  课程id
	 * */
	 List<Map<String, Object>> getClassRelationByList(List<String> paramList) throws Exception;

	/**xzx
	 * @description 通过courseId获取这个课程与正常班级的关联信息
	 * */
	 List<Map<String, Object>> getClassRelationByCId(Map<String, Object> paramMap) throws Exception;

	/** xzx
	 * @description 获取是否存在这些班级的任课关联信息
	 * @param paramMap courseId
	 * @return Map
	 * @throws Exception
	 */
	 List<Map<String, Object>> getDelClassMark(List<String> list) throws Exception;

	/** xzx
	 * @description 通过班级id集合查询这些班级中有关联的班级的名字
	 * @param paramMap courseId
	 * @return Map
	 * @throws Exception
	 */
	 List<Map<String, Object>> getRelaClassNameList(List<String> list) throws Exception;

	 List<String> getIsClassStu(List<String> list) throws Exception;

	/** sy
	 * @description 获取是这些班级是否存在以考试的班级
	 * @param paramMap classId
	 * @return Map
	 * @throws Exception
	 */
	 List<Map<String, Object>> getClassStateList(List<String> list) throws Exception;


	/**
	 * @param stuorteaId
	 * @return  通过教师id获取当前教师所教授的班级信息。
	 * @throws IOException
	 */
	 List<Map<String, Object>> getClassListByTeaId(Map<String,Object> paramMap) throws Exception;
}


